package mop.controller;

/**
 * Interface for a Visitors to Controllers
 * @author Mop Team 7
 * 
 * !! LoginUserController not part of this because Login User shouldn't be visited
 */
public interface ControllerVisitor 
{
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(ChangeClockController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(CreateProjectController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(CreateResourceController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(CreateTaskController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(CreateUserController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(FocusWorkController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(MakeResourceReservationController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(ModifyTaskDetailsController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(RemoveTaskController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(UpdateTaskStatusController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(LoginController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void visit(RemoveProjectController c);
}